45 Input() : mObject(NULL), mIndex(0), mSize(0), mFixedInput(NULL), mType(
kFrameNormal), mUpdate(
false),
mParameters(
false), mTrigger(
true), mSwitchable(
false) {}
69 Output() : mMemory(NULL), mType(
kFrameNormal), mCurrentSize(0), mRequestedSize(0), mPointerOffset(0) {}
76 size_t mRequestedSize;
77 size_t mPointerOffset;
89 virtual void setFixedInput(
unsigned long idx,
double *input,
unsigned long size);
94 virtual void reset(
double samplingRate,
unsigned long maxBlockSize);
113 void setIO(
unsigned long nIns,
unsigned long nOuts,
unsigned long nAudioChans = 0);
127 bool isTrigger(
unsigned long idx)
const {
return mInputs[idx].mTrigger && mInputs[idx].mObject && (mInputs[idx].mObject->mFrameTime == mFrameTime); }
148 double *
getInput(
unsigned long idx,
size_t *size);
151 double *
getOutput(
unsigned long idx,
size_t *size);
156 static void copyVector(
double *output,
double *input,
unsigned long size) { std::copy(input, input + size, output); }
157 static void zeroVector(
double *output,
unsigned long size) { std::fill_n(output, size, 0.0); }
163 virtual unsigned long getInputObjectIdx(
unsigned long blockIdx,
unsigned long idx) {
return blockIdx; }
180 void reset(LocalQueue *queue);
186 virtual void blockProcess(
double **ins,
double **outs,
unsigned long blockSize) {}
190 virtual void objectReset() {}
194 virtual void update() {}
198 virtual SchedulerInfo schedule(
bool newFrame,
bool noAdvance) = 0;
202 virtual void process() = 0;
212 inline void freeOutputMemory();
213 inline void releaseOutputMemory();
217 inline void dependencyNotify(
bool releaseMemory,
bool fromInput);
218 void dependenciesReady();
219 void setOutputDependencyCount();
220 void incrementInputDependency();
224 virtual void connectionUpdate(Queue *queue);
227 virtual void clearAutoOrderingConnections();
251 std::vector<FrameLib_DSP *> mInputDependencies;
252 std::vector<FrameLib_DSP *> mOutputDependencies;
254 std::vector <Input> mInputs;
255 std::vector <Output> mOutputs;
260 long mDependencyCount;
261 long mOutputMemoryCount;
271 bool mUpdatingInputs;
ObjectType
Definition: FrameLib_Types.h:24
static bool handlesAudio()
Definition: FrameLib_DSP.h:336
Definition: FrameLib_Types.h:24
Definition: FrameLib_Parameters.h:21
virtual void autoOrderingConnections()
Definition: FrameLib_DSP.cpp:605
FrameLib_Processor(FrameLib_Context context, void *owner, FrameLib_Parameters::Info *info, unsigned long nIns=0, unsigned long nOuts=0)
Definition: FrameLib_DSP.h:286
unsigned long getNumOrderingConnectionObjects()
Definition: FrameLib_DSP.h:168
bool allocateOutputs()
Definition: FrameLib_DSP.cpp:197
FL_FP FrameLib_TimeFormat
Definition: FrameLib_Types.h:20
Definition: FrameLib_Types.h:25
Definition: FrameLib_Context.h:10
FrameLib_TimeFormat getInputFrameTime(unsigned long idx) const
Definition: FrameLib_DSP.h:138
static void zeroVector(double *output, unsigned long size)
Definition: FrameLib_DSP.h:157
static bool handlesAudio()
Definition: FrameLib_DSP.h:290
double * getInput(unsigned long idx, size_t *size)
Definition: FrameLib_DSP.cpp:247
void setParameterInput(unsigned long idx)
Definition: FrameLib_DSP.cpp:161
virtual unsigned long getOutputObjectIdx(unsigned long blockIdx)
Definition: FrameLib_DSP.h:166
virtual FrameType outputType(unsigned long idx) const
Definition: FrameLib_DSP.h:101
Definition: FrameLib_Parameters.h:34
FrameLib_TimeFormat getBlockEndTime() const
Definition: FrameLib_DSP.h:136
FrameLib_TimeFormat getCurrentTime() const
Definition: FrameLib_DSP.h:134
Definition: FrameLib_DSP.h:17
static bool handlesAudio()
Definition: FrameLib_DSP.h:358
FrameLib_TimeFormat mTimeAdvance
Definition: FrameLib_DSP.h:36
Definition: FrameLib_DSP.h:349
virtual void setFixedInput(unsigned long idx, double *input, unsigned long size)
Definition: FrameLib_DSP.cpp:34
FrameLib_DSP * getOutputObject(unsigned long blockIdx)
Definition: FrameLib_DSP.h:165
static ObjectType getType()
Definition: FrameLib_DSP.h:289
Definition: FrameLib_Object.h:13
FrameLib_TimeFormat getFrameTime() const
Definition: FrameLib_DSP.h:131
ObjectType getType() const
Definition: FrameLib_Object.h:125
FrameLib_DSP * getInputObject(unsigned long blockIdx, unsigned long idx)
Definition: FrameLib_DSP.h:162
Definition: FrameLib_DSP.h:28
FrameLib_TimeFormat getBlockStartTime() const
Definition: FrameLib_DSP.h:135
double * getOutput(unsigned long idx, size_t *size)
Definition: FrameLib_DSP.cpp:264
FrameLib_TimeFormat getInputTime() const
Definition: FrameLib_DSP.h:133
virtual SchedulerInfo schedule(bool newFrame, bool noAdvance)
Definition: FrameLib_DSP.h:296
double mSamplingRate
Definition: FrameLib_DSP.h:235
virtual unsigned long getInputObjectIdx(unsigned long blockIdx, unsigned long idx)
Definition: FrameLib_DSP.h:163
virtual SchedulerInfo schedule(bool newFrame, bool noAdvance)
Definition: FrameLib_DSP.h:342
FrameLib_Parameters mParameters
Definition: FrameLib_DSP.h:240
Definition: FrameLib_FixedPoint.h:47
void inputMode(unsigned long idx, bool update, bool trigger, bool switchable, FrameType type=kFrameNormal)
Definition: FrameLib_DSP.cpp:151
ManagedPointer< FrameLib_ProcessingQueue, &Global::getProcessingQueue, &Global::releaseProcessingQueue > ProcessingQueue
Definition: FrameLib_Context.h:85
Definition: FrameLib_ProcessingQueue.h:12
void addParameterInput()
Definition: FrameLib_DSP.cpp:169
void requestOutputSize(unsigned long idx, size_t size)
Definition: FrameLib_DSP.h:143
unsigned long getNumInputObjects(unsigned long blockIdx)
Definition: FrameLib_DSP.h:161
SchedulerInfo()
Definition: FrameLib_DSP.h:30
bool mNewFrame
Definition: FrameLib_DSP.h:37
FrameLib_DSP * getOrderingConnectionObject(unsigned long idx)
Definition: FrameLib_DSP.h:169
virtual FrameType inputType(unsigned long idx) const
Definition: FrameLib_DSP.h:100
virtual void process()
Definition: FrameLib_DSP.h:364
void updateTrigger(unsigned long idx, bool trigger)
Definition: FrameLib_DSP.cpp:188
static ObjectType getType()
Definition: FrameLib_DSP.h:357
FrameLib_TimeFormat getInputValidTime(unsigned long idx) const
Definition: FrameLib_DSP.h:139
Definition: FrameLib_Object.h:559
void setIO(unsigned long nIns, unsigned long nOuts, unsigned long nAudioChans=0)
Definition: FrameLib_DSP.cpp:129
FrameLib_AudioOutput(FrameLib_Context context, void *owner, FrameLib_Parameters::Info *info, unsigned long nIns=0, unsigned long nOuts=0, unsigned long nAudioOuts=0)
Definition: FrameLib_DSP.h:332
size_t blockSize(void *ptr)
Definition: FrameLib_Memory.cpp:23
Definition: FrameLib_Parameters.h:153
Definition: FrameLib_DSP.h:281
void outputMode(unsigned long idx, FrameType type)
Definition: FrameLib_DSP.cpp:181
SchedulerInfo(FrameLib_TimeFormat timeAdvance, bool newFrame, bool outputDone)
Definition: FrameLib_DSP.h:33
FrameLib_DSP(ObjectType type, FrameLib_Context context, void *owner, FrameLib_Parameters::Info *info, unsigned long nIns, unsigned long nOuts, unsigned long nAudioChans=0)
Definition: FrameLib_DSP.cpp:6
unsigned long mMaxBlockSize
Definition: FrameLib_DSP.h:236
static void copyVector(double *output, double *input, unsigned long size)
Definition: FrameLib_DSP.h:156
Definition: FrameLib_DSP.h:327
static ObjectType getType()
Definition: FrameLib_DSP.h:335
FrameLib_TimeFormat getValidTime() const
Definition: FrameLib_DSP.h:132
FrameLib_Scheduler(FrameLib_Context context, void *owner, FrameLib_Parameters::Info *info, unsigned long nIns=0, unsigned long nOuts=0, unsigned long nAudioIns=0)
Definition: FrameLib_DSP.h:354
void setIO(unsigned long nIns, unsigned long nOuts)
Definition: FrameLib_DSP.h:298
unsigned long getNumAudioIns() const
Definition: FrameLib_Object.h:139
Definition: FrameLib_Types.h:24
bool mOutputDone
Definition: FrameLib_DSP.h:38
FrameType
Definition: FrameLib_Types.h:25
virtual void blockUpdate(double **ins, double **outs, unsigned long blockSize)
Definition: FrameLib_DSP.cpp:56
virtual void reset(double samplingRate, unsigned long maxBlockSize)
Definition: FrameLib_DSP.cpp:72
Definition: FrameLib_Types.h:24
virtual const FrameLib_Parameters * getParameters() const
Definition: FrameLib_DSP.h:98
~FrameLib_DSP()
Definition: FrameLib_DSP.cpp:16
bool isTrigger(unsigned long idx) const
Definition: FrameLib_DSP.h:127